/*
Gallery模块管理系统相册，支持从相册中选择图片文件、保存图片文件到相册等功能。
通过bsl.gallery获取相册管理对象。
*/
var getError = function(message){
    var error = {};
    error.code = 0;//错误编码一律为0,暂时无效
    error.message = message;
    return error;
};

define(['./bslGalleryFilter','./bslPopPosition'],function(bslGalleryFilter,bslPopPosition) {
    var bslGallery={
        //从系统相册选择文件（目前只有图片）
        //iOS - 5.1+ (支持): 受系统相册路径的访问限制，选择后图片会先拷贝到应用沙盒下的"Library/bsl"目录中
        pick:function(successCB, errorCB,options){
            options = options || {};

            //Android - 2.2+ (不支持): 直接返回系统相册中的文件路径，忽略此参数。 
            //iOS - 4.3+ (支持): iOS会将相册中的文件拷贝到当前应用沙箱系统目录中,多选情况下，会引用filename里的文件夹。
            var filename = options.filename||"";

            //默认为选择图片文件。
            //ios对视频过滤器无效
            var filter = bslGalleryFilter.getFilter(options.filter);

            //Android - 2.2+ (不支持): 忽略此参数，无动画效果。
            var animation = options.animation||true;

            //相册选择界面弹出指示区域
            /*对于大屏幕设备如iPad，相册选择界面为弹出窗口，此时可通过此参数设置弹出窗口位置。 
            其为JSON对象，格式如{top:"10px",left:"10px",width:"200px",height:"200px"}，
            所有值为像素值，左上坐标相对于容器的位置，默认弹出位置为屏幕居中。*/
            var popover = bslPopPosition.createPopPostion(options.popover);

            //是否支持多选图片
            //多选下，回调中是返回数组，单选下，回调中是返回文件路径字符串
            var multiple = options.multiple||false;
                
            function success(value){
                
                var Event = {
                    files:value
                };

                //判断value是否为数组
                if (Object.prototype.toString.apply(value) === '[object Array]' ) {
                    //原生返回数组说明是多选
//                    var str = Event.files
                    successCB(Event);
                }

                else{
                    //原生返回的是字符串说明是单选
                    successCB(value);
                }
            }

            //封装成一个error对象再返回到前端的错误回调中
            function error(message){
                var result = getError(message);
                errorCB(result);
            }
            
            var args =[filename,filter,animation,popover,multiple];
            cordova.exec(success,error,"Gallery","pick",args);
        },

        //保存文件到系统相册中，每次仅能保存一个文件。
        //IOS:文件路径需要是在沙盒里的路径
        save:function(path, successCB, errorCB){

            //封装成一个error对象再返回到前端的错误回调中
            function error(message){
                var result = getError(message);
                errorCB(result);
            }

            cordova.exec(successCB,error,"Gallery","save",[path]);
        },
    };  

    return bslGallery;
});
